diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index 9ceac0b..508f6be 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -1,4 +1,4 @@
-<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 /**
  * CodeIgniter
  *
@@ -58,7 +58,7 @@
 	var $ar_cache_having		= array();
 	var $ar_cache_orderby		= array();
 	var $ar_cache_set			= array();
-	
+
 	var $ar_no_escape 			= array();
 
 
@@ -175,7 +175,7 @@
 	 *	select_max()
 	 *	select_min()
 	 *	select_avg()
-	 *  select_sum()
+	 * select_sum()
 	 *
 	 * @access	public
 	 * @param	string	the field
@@ -286,7 +286,7 @@
 			{
 				$val = trim($val);
 
-				// Extract any aliases that might exist.  We use this information
+				// Extract any aliases that might exist. We use this information
 				// in the _protect_identifiers to know whether to add a table prefix
 				$this->_track_aliases($val);
 
@@ -332,7 +332,7 @@
 			}
 		}
 
-		// Extract any aliases that might exist.  We use this information
+		// Extract any aliases that might exist. We use this information
 		// in the _protect_identifiers to know whether to add a table prefix
 		$this->_track_aliases($table);
 
@@ -438,7 +438,7 @@
 
 					$v = ' '.$this->escape($v);
 				}
-				
+
 				if ( ! $this->_has_operator($k))
 				{
 					$k .= ' = ';
@@ -926,7 +926,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set" function.  Allows key/value pairs to be set for inserting or updating
+	 * The "set" function. Allows key/value pairs to be set for inserting or updating
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -1084,7 +1084,7 @@
 		{
 			if ($this->db_debug)
 			{
-				//No valid data array.  Folds in cases where keys and values did not match up
+				//No valid data array. Folds in cases where keys and values did not match up
 				return $this->display_error('db_must_use_set');
 			}
 			return FALSE;
@@ -1124,7 +1124,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set_insert_batch" function.  Allows key/value pairs to be set for batch inserts
+	 * The "set_insert_batch" function. Allows key/value pairs to be set for batch inserts
 	 *
 	 * @access	public
 	 * @param	mixed
@@ -1158,7 +1158,7 @@
 
 			if ($escape === FALSE)
 			{
-				$this->ar_set[] =  '('.implode(',', $row).')';
+				$this->ar_set[] = '('.implode(',', $row).')';
 			}
 			else
 			{
@@ -1169,7 +1169,7 @@
 					$clean[] = $this->escape($value);
 				}
 
-				$this->ar_set[] =  '('.implode(',', $clean).')';
+				$this->ar_set[] = '('.implode(',', $clean).')';
 			}
 		}
 
@@ -1399,7 +1399,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * The "set_update_batch" function.  Allows key/value pairs to be set for batch updating
+	 * The "set_update_batch" function. Allows key/value pairs to be set for batch updating
 	 *
 	 * @access	public
 	 * @param	array
@@ -1652,7 +1652,7 @@
 			return;
 		}
 
-		// Does the string contain a comma?  If so, we need to separate
+		// Does the string contain a comma? If so, we need to separate
 		// the string into discreet statements
 		if (strpos($table, ',') !== FALSE)
 		{
@@ -1682,7 +1682,7 @@
 	 * Compile the SELECT statement
 	 *
 	 * Generates a query string based on which functions were used.
-	 * Should not be called directly.  The get() function calls it.
+	 * Should not be called directly. The get() function calls it.
 	 *
 	 * @access	private
 	 * @return	string
@@ -1989,7 +1989,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Resets the active record values.  Called by the get() function
+	 * Resets the active record values. Called by the get() function
 	 *
 	 * @access	private
 	 * @param	array	An array of fields to reset
@@ -2009,7 +2009,7 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * Resets the active record values.  Called by the get() function
+	 * Resets the active record values. Called by the get() function
 	 *
 	 * @access	private
 	 * @return	void
